package aceim.app.view.page.chat; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.Iterator; import java.util.List; import aceim.api.utils.Logger; import aceim.app.dataentity.SmileyResources; import aceim.app.utils.ViewUtils; import aceim.app.widgets.adapters.SingleViewAdapter; import android.content.Context; import android.content.res.Resources; import android.graphics.drawable.Drawable; import android.widget.ImageView; import android.widget.ImageView.ScaleType; public class ImageSmileyAdapter extends SingleViewAdapter<Drawable, ImageView> { private final List<String> mNames; private ImageSmileyAdapter(Context context, List<Drawable> objects, List<String> slist) { super(context, objects); this.mNames = Collections.unmodifiableList(slist); } @Override protected void fillView(Drawable item, ImageView view) { view.setImageDrawable(item); view.setScaleType(ScaleType.CENTER_INSIDE); } public static final ImageSmileyAdapter fromSmileyResources(Context context, SmileyResources resources){ try { Resources r = resources.getNativeResourcesForProtocol(context.getPackageManager()); List<Drawable> dlist = new ArrayList<Drawable>(); List<String> slist = new ArrayList<String>(Arrays.asList(resources.getNames())); int index = 0; for (Iterator<String> i = slist.iterator(); i.hasNext();) { String smiley = i.next(); if (ViewUtils.isSmileyReadOnly(smiley)) { i.remove(); } else { dlist.add(r.getDrawable(resources.getDrawableIDs()[index])); } index++; } return new ImageSmileyAdapter(context, dlist, slist); } catch (Exception e) { Logger.log(e); } return null; } @Override public void add(Drawable object) { throw new UnsupportedOperationException(); } @Override public void addAll(Collection<? extends Drawable> collection) { throw new UnsupportedOperationException(); } @Override public void addAll(Drawable ... items) { throw new UnsupportedOperationException(); } @Override public void insert(Drawable object, int index) { throw new UnsupportedOperationException(); } @Override public void remove(Drawable object) { throw new UnsupportedOperationException(); } @Override public void clear() { throw new UnsupportedOperationException(); } public String getItemName(int location){ return mNames.get(location); } }